package com.wl.lib.mvi

import androidx.annotation.Keep

// Created by wangliang on 2024/4/24.

/**
 * UI 的状态都通过该接口实现
 */
@Keep
interface IUiState

/**
 * 页面触发的事件都通过该接口实现
 */
@Keep
interface IUiIntent

/**
 * 页面某些事件通过该接口实现(比如 view model 触发让页面响应一个动作，如果通过 state 不太好实现，因为 state 未变化)
 */
@Keep
interface IUiEvent

sealed class LoadUiState : IUiState {
    data object INIT : LoadUiState()
    data class Loading(var show: Boolean) : LoadUiState()
    data object ShowMainView : LoadUiState()
    data class Error(val msg: String) : LoadUiState()
}